package educar.controllers;


import java.io.File;
import java.io.IOException;

import javax.swing.JOptionPane;

import educar.gui.IView;
import educar.gui.teacher.actividadesMateria;
import educar.idioma.Locale;
import educar.listeners.FileUtils;
import educar.models.Actividad;


/**
 * Permite Borrar una Actividad
 */
public class DeleteActividadController implements IController {
	private actividadesMateria view;
	private Actividad actividad;

	public void process(String model){
		/*obtengo la actividad seleccionada*/
		actividad = view.getActividad();
		/*si no selecciono ninguna informo*/
		if (actividad==null) {
			JOptionPane.showMessageDialog(null,Locale.SELECT_ACTIVIY,Locale.NOT_ACTIVITY_SELECTED,JOptionPane.WARNING_MESSAGE);
			return;
		}
		/*pegregunto si desea borrar*/
		int n = JOptionPane.showConfirmDialog(null,Locale.DELETE+" "+Locale.ACTIVITY+": "+actividad.getCod_actividad(),Locale.DELETE+" "+Locale.ACTIVITY,JOptionPane.YES_NO_OPTION);
		if (n == JOptionPane.OK_OPTION) {
			/*obtengo la "ruta" del archivo asosiado */
			String file_path = actividad.getFile_path();
			/*intento borrar archivo y actividad y refrescar la lista de actividades*/
			try {
				borrarArchivo(file_path);
				actividad.destroy();
				view.RefeshActividades();
				view.setActividad(null);
			} catch (IOException e) {
				System.out.println(Locale.CANT_DELETE+" "+Locale.FILE+": "+actividad.getFile_path());
				e.printStackTrace();
			}		
		}
		else {
			return;
		}
	}

	
	/**
	 * Permite borrar el archivo asosiado a la actividad
	 * @param file_path "path del file guardado en base de datos"
	 * @throws IOException
	 */
	private void borrarArchivo(String file_path) throws IOException {
		/*obtengo la ruta desde donde se ejecuta el progrmaa */
		String appPath = System.getProperties().getProperty("user.dir");
		/*creo el path del archivo desde el path de la aplicacion la carpeta activity files y el path guardado en DB*/
		String archivoPath = appPath+File.separator+"activity_files"+File.separator+actividad.getMateria().getCodigo()+File.separator+actividad.getCod_actividad()+"."+file_path;
		/*creo el archivo a borrar*/
		File origen = new File(archivoPath);
		/*borro el archivo*/
		FileUtils.delete(origen);		
	}
	
	public void setView(IView view) {
		this.view = (actividadesMateria)view;
	}

}
